package com.shujia.day08.ketang;

/*
    java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstract
    abstract 抽象的
    可以修饰类,修饰成员方法

    1. 被abstract修饰的类是抽象类, 抽象类不能被实例化
    2. 被abstract修饰的方法是抽象方法, 抽象方法不能有大括号实现
    3. 在抽象类,既可以存在具体实现的方法, 也可以存在抽象方法
    4. 若一个类中有抽象方法, 这个类一定是一个抽象类
    5. 当一个具体的类继承一个抽象类, 必须要实现抽象类中的所有抽象方法
    6. 当一个抽象类继承一个抽象类的时候, 可以选择性地是否重写抽象方法

 */
abstract class Animal2{
    //拥有具体实现的方法
    public void eat1(){
        System.out.println("吃饭");
    }

    //抽象方法
    public abstract void eat2();
}

abstract class A1 extends Animal2{

}


class Dog2 extends Animal2{
    @Override
    public void eat2() {
        System.out.println("🐕吃🥩");
    }
}


public class AbstractDemo1 {
    public static void main(String[] args) {
//        Animal2 animal2 = new Animal2();
    }
}
